#include "comm.hpp"

int main()
{
    //创建管道文件
    NamedFifo fifo(PATH,FILENAME);

    //文件操作
    FileOper readerfile(PATH,FILENAME);

    readerfile.OpenForRead();
    readerfile.Read();
    readerfile.Close();

    return 0;
}
    /*umask(0);
    //新建管道
    int n = mkfifo(FIFO_FILE,0666);//创建对应的管道文件
    //FIFO_FILE是命名管道文件名，666则为该管道文件的初始权限
    if(n < 0)//mkfifo函数执行失败
    {
        std::cerr << "mkfifo error" << std::endl;
        return 1;
    }
    std::cout << "mkfifo success" << std::endl;*/

   // NamedFifo fifo(".","fifo");

    //打开
    //write那一方没有执行open的时候，read那一方就会在open内部进行阻塞
    //直到有人打开管道文件，open才会返回
   /* int fd = open(FIFO_FILE,O_RDONLY);//以只读方式打开前面创建的命名管道文件
    if(fd < 0)
    {
        std::cerr << "open fifo error" << std::endl;//输出打开错误信息并返回2
        return 2;
    }
    std::cout << "open fifo success" << std::endl;*/

    //正常地read
    /*while(true)
    {
        char buffer[1024];
        int number = read(fd,buffer,sizeof(buffer)-1);
        //每次读取sizeof(buffer) - 1 个字节到 buffer 数组中（留一个字节用于存放'\0'）
        if(number > 0)//成功读取数据
        {
            buffer[number] =  0;
            std::cout << "Client Say#" << buffer << std::endl;
            //通过 std::cout 输出读取到的数据，格式为 “Client Say#” 加上实际读取的内容
        }
        else if(number == 0)//读取发生错误
        {
            //添加合适的逻辑来处理这些情况，比如在错误时输出错误信息并退出循环
            std::cout << "cliebt quit! me too! " << number << std::endl;
            break;
        }
        else
        {
            std::cerr << "read error" << std::endl;
            break;
        }
    }*/
   // close(fd);//关闭之前打开的命名管道文件描述符 fd ，释放相关资源

    //删除管道文件
   /* n = unlink(FIFO_FILE);
    if(n == 0)//删除成功
    {
        std::cout << "remove fifo success" << std::endl;
    }
    else
    {
        //应该添加错误处理逻辑，比如输出错误信息
        std::cerr << "remove fifo error" << std::endl;
    }*/
 